package com.boot.utils;

import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.exceptions.JWTVerificationException;
import org.junit.jupiter.api.Assertions;

import java.util.Date;

public class JwtUtils {

    public static final String secret = "111111";//秘钥

    /**
     * 通过key获取token值
     * @param key
     * @return
     */
    public static String getToken(String key){
        String token = JWT.create()
                .withExpiresAt(new Date(System.currentTimeMillis()+100000))  //设置过期时间
                .withAudience("zhangsan") //设置接受方信息，一般时登录用户
                .sign(Algorithm.HMAC256(secret));  //使用HMAC算法，111111作为密钥加密
        return token;
    }

    /**
     * 通过token解析出用户名
     * @param token
     * @return
     */
    public static String getUserName(String token){
        String userName = JWT.decode(token).getAudience().get(0);
        return userName;
    }

    /**
     * 验证token
     * @param token
     * @return
     */
    public static boolean verifyToken(String token){
        JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256(secret)).build();
        try{
            jwtVerifier.verify(token);//没报错说明验证成功
            return true;
        }catch (JWTVerificationException e){
            return false;
        }
    }

}
